<?php
/**
 * 发送邮件,异步实现，将任务放入消息队列
 * @param $mail_msg
 * @return bool|int
 */
function sendmail($mail_msg){
    if ($mail_msg){
        load('cache.func.php');
        return queue_push('mailtask',json_encode($mail_msg));
    }
    return false;
}


/**验证码校验
 * @param $vcode
 * @return bool
 */
function check_vcode($vcode){
    if ($_SESSION['verify_code'] == strtolower($vcode)) return true;
    return false;
}

/**
 * 重置密码的加密参数校验,校验成功返回密文code 和 解码后的data
 * @return array
 */
function check_code($code){
    if(!$code){
        die(show_msg('非法请求','/'));
    }
    $code = trim($code);
    load('db.func.php');
    load('utils.func.php');
    $auth_key = c('auth_key');
    $now = time();
    $raw_code = encrypt($code, 'DECODE', $auth_key);
    $data = explode(';', $raw_code);
    $expire = 3600 * 24;  //有效期24小时
    //验证code
    if(is_array($data) && is_numeric($data[0]) && is_numeric($data[1])){
        //判断是否过期
        if(!(($now-$data[1])<$expire)){
            die(show_msg('链接已经过期！','/'));
        }
        //判断是否存在该用户
        $userinfo = get_user_info($data[0]);
        if(!$userinfo){
            die(show_msg('无法重置密码，不存在该用户！','/'));
        }
    }else{
        //code 验证失败，非法
        die(show_msg('非法的请求参数','/'));
    }
    return array($code,$data);
}

/**
 * 查询用户信息
 * @param $uid
 * @return bool|mixed
 */
function get_user_info($uid){
    load('db.func.php');
    if (!$uid or !is_numeric($uid)) return false;
    $uid = s($uid);
    $userinfo = get_line("select * from member where userid='".$uid."'");
    if(!$userinfo){
        return false;
    }
    return $userinfo;
}

/**
 * 密码加密方法
 * @param $pwd
 * @return string
 */
function encrypt_pwd($pwd){
    return md5($pwd);
}

/**
 * 获取客户端IP
 * @return bool
 */
function get_real_ip(){
    $ip=false;
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
        for ($i = 0; $i < count($ips); $i++) {
            if (!preg_match("^(10|172\.16|192\.168)\.", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}